package com.chenfan.ccp.plug.business.annotation;

import java.lang.annotation.*;

/**
 * @author xutong
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface LogProperty {
    /**
     * 希望被记录的字段名字，字段的描述
     * 必填，不能为空
     *
     * @return
     */
    String field() ;

    /**
     * 数据标识
     */
    String subBizNo() ;

    /**
     * 修改之前的值
     * 支持spel表达式
     */
    String beforeValue() default "";

    /**
     * 支持spel表达式
     */
    String afterValue() default "";

    /**
     * 代码字典的默认名称
     * 字典对象要为Map<String,Object>类型
     */
    @Deprecated
    String dictionary() default "dic";

    /**
     * 字典类，提供字典类，根据类的字段名称和默认值组成map
     */
    Class dic() default Object.class;

    /**
     * 此行是否需要遍历数组，
     * 被替换字符为 @
     */
    boolean foreach() default false;


    /**
     * 日志字段类型
     */
    enum LogFieldTypeEnum {
        //文本
        STRING,
        //数字
        NUMBER,
        //字典
        DIC,
        //数据状态
        RECEIPTS,
        //图片
        IMAG,
        //附件
        ATTACHMENT,
    }


    LogFieldTypeEnum fieldType() default LogFieldTypeEnum.STRING;

}
